package member;

import java.io.Reader;

import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.opensymphony.xwork2.Preparable;

public class MemberAction extends ActionSupport 
							implements Preparable, ModelDriven{
	private MemberVO member;
	
	public String execute() throws Exception{
	//MemberAction클래스의 execute()메서드가 실행되어지는 때에는 
	//prepare인터셉터에 의해서 MemberVO클래스 객체가 생성되어지고
	//modeldriven인터셉터에 의해서 MemberVO클래스 객체가 밸류스택의 상단에 
	//올라가있게 되고, params 인터셉터에 의해서 밸류스택에 있는 MemberVO객체에
	//클라이언트로 부터 넘어온 파라미터값이 세팅이 되어진 상태임. 즉,멤버변수 member와
	//연결된 객체에 클라이언트로부터 넘어온 파라미터 값들이 설정된 상태임
		
		Reader reader = Resources.getResourceAsReader("sqlMapConfig.xml");
		SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
		reader.close();
		
		sqlMap.insert("insertMember", member);

		return SUCCESS;
	}

	@Override //prepare인터셉터에 의해서 호출되어지고 실행되어짐
	// MemberVO클래스 객체를 생성함
	public void prepare() throws Exception {
		member = new MemberVO();
	}

	@Override//modelDriven인터셉터에 의해서 호출되어지고 실행되어짐
	//prepare()메서드에서 생성된 모델객체(MemberVO클래스 객체)를 
	//밸류스택의 최상단에 올려놓음
	public Object getModel() {
		return member;
	}

}
